﻿/*
 Copyright (c) 2003-2018, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
*/
CKEDITOR.dialog.add("anchor", function (c) {
  function e(b, a) {
    return b.createFakeElement(b.document.createElement("a", {attributes: a}), "cke_anchor", "anchor")
  }

  return {
    title: c.lang.link.anchor.title, minWidth: 300, minHeight: 60, onOk: function () {
      var b = CKEDITOR.tools.trim(this.getValueOf("info", "txtName")), a = {id: b, name: b, "data-cke-saved-name": b};
      this._.selectedElement ? this._.selectedElement.data("cke-realelement") ? (b = e(c, a), b.replace(this._.selectedElement), CKEDITOR.env.ie && c.getSelection().selectElement(b)) : this._.selectedElement.setAttributes(a) :
        (b = (b = c.getSelection()) && b.getRanges()[0], b.collapsed ? (a = e(c, a), b.insertNode(a)) : (CKEDITOR.env.ie && 9 > CKEDITOR.env.version && (a["class"] = "cke_anchor"), a = new CKEDITOR.style({
          element: "a",
          attributes: a
        }), a.type = CKEDITOR.STYLE_INLINE, a.applyToRange(b)))
    }, onHide: function () {
      delete this._.selectedElement
    }, onShow: function () {
      var b = c.getSelection(), a;
      a = b.getRanges()[0];
      var d = b.getSelectedElement();
      a.shrink(CKEDITOR.SHRINK_ELEMENT);
      a = (d = a.getEnclosedNode()) && d.type === CKEDITOR.NODE_ELEMENT && ("anchor" === d.data("cke-real-element-type") ||
        d.is("a")) ? d : void 0;
      var f = (d = a && a.data("cke-realelement")) ? CKEDITOR.plugins.link.tryRestoreFakeAnchor(c, a) : CKEDITOR.plugins.link.getSelectedLink(c);
      if (f) {
        this._.selectedElement = f;
        var e = f.data("cke-saved-name");
        this.setValueOf("info", "txtName", e || "");
        !d && b.selectElement(f);
        a && (this._.selectedElement = a)
      }
      this.getContentElement("info", "txtName").focus()
    }, contents: [{
      id: "info", label: c.lang.link.anchor.title, accessKey: "I", elements: [{
        type: "text", id: "txtName", label: c.lang.link.anchor.name, required: !0, validate: function () {
          return this.getValue() ?
            !0 : (alert(c.lang.link.anchor.errorName), !1)
        }
      }]
    }]
  }
});
